package wyswietlanie;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.Transparency;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;

import javax.imageio.ImageIO;


public class SpriteMenadzer {
	private static SpriteMenadzer Instancja = new SpriteMenadzer();
	public HashMap<String, Sprite> kontener = new HashMap<String, Sprite>();
	
	public static SpriteMenadzer instancja() {
		return Instancja;
	}
	
	public void dodajSprite(String sprId, String spr) {
	  if(!czyWczytany(sprId))
		try {
			BufferedImage zrodlo = ImageIO.read(new File(spr));
			GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
			Image accImg = gc.createCompatibleImage(zrodlo.getWidth(), zrodlo.getHeight(), Transparency.TRANSLUCENT);
			accImg.getGraphics().drawImage(zrodlo, 0, 0, null);
			

			kontener.put(sprId, new Sprite(sprId,accImg));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public Sprite pobierzSprite(String sprId) {
		if(kontener.containsKey(sprId)) 
			return kontener.get(sprId);
		else
			return null;
	}
	
	public void usun(String sprId) {
		kontener.remove(sprId);
	}
	
	public boolean czyWczytany(String sprId) {
		return kontener.containsKey(sprId);
	}
	
	public void wczytajSprity() {
		try {
			BufferedReader rd = new BufferedReader(
					new FileReader("sprite.txt"));
			String linia;
			while((linia = rd.readLine()) != null) {
				if(linia.startsWith("--")) continue;
				String[] dane = linia.split("\\|");
				Integer ile = Integer.parseInt(dane[2]);
				for(int i=0; i<ile; i++) {
					String nazwa = dane[1]+i;
					String plik = dane[0]+".p"+i;
					dodajSprite(nazwa,plik);
					//System.out.println(nazwa+": "+plik);
				}
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private SpriteMenadzer() {
		this.wczytajSprity();
	}
}
